/**
 * 返回表格的表头字段字段
 * @param  {[String]} 表格类型（如内部商品，销售订单）
 * @param  {[String]} 获取数据的类型（如表头数据，查询键值）
 * @return {[Array]} 你需要的数据以数组的形式返回
 */
export function getTableHeadData (type, key) {
  var _data = new Array()
  switch (type) {
    case 'SERVICETYPE':
      _data = subSystemMapData[key]
      break
    case 'ROLE':
      _data = roleMapData[key]
      break
    case 'OPERTYPE':
      _data = opertypeMapData[key]
      break
    case 'RESERVATION_TYPE':
      _data = reservationMapData[key]
      break
    case 'TECHTITLE_CLASS':
      _data = titleclassMapData[key]
      break
    default:
      break
  }
  return _data
}

//子系统
var subSystemMapData = {
  //表头信息
  tableHeadKey: [{
    show: false, //是否显示
    lable: 'ID',
    fieldname: 'id',
    sort: false
  }, {
    show: true,
    lable: '服务类型名称',
    fieldname: 'service_type_title',
    sort: false
  }, {
    show: true,
    lable: '服务类型描述',
    fieldname: 'service_type_description',
    sort: false
  }, {
    show: true,
    lable: '备注',
    fieldname: 'memo',
    sort: false
  }]
  //查询键值
  searchKey: [{
    fieldname: 'service_type_title',
    lable: '服务类型名称',
    type: 'select',
    data: [],
    value: '',
    path: 'SUBSYS_LISTALL',//查询所有数据的映射字段
    cpp_type: 'string'
  }]
}

/**
 * 对表格显示的数据进行格式化
 * @param  {Object} row    每一行的数据
 * @param  {Object} column 每一列的描述
 * @return {String}        格式化的数据
 */
export function tableCommonFormatter (row, column) {
  if (column.property === 'verify') {
    if (row.verify === 1) {
      return '审核通过'
    } else {
      return '审核失败'
    }
  }
  if (column.property === 'sex') {
    if (row.sex === 0) {
      return '男'
    } else {
      return '女'
    }
  }
  return row[column.property]
}

/**
 * 根据权限和页面类型获取功能按钮
 * @param  {String} type      页面类型如list，add
 * @param  {Int} authority  用户的权限
 * @return {Array}           返回功能按钮的信息
 */
export function getToolBarList (type, authority) {
  var s = 0
  var toolbar = new Array()
  var toolbarList = new Array()
  switch (type) {
    case 'add':
      toolbarList = addToolbarType
      break
    case 'list':
      toolbarList = listToolbarType
      break
    default:
      toolbarList = addToolbarType
      break
  }
  var len = toolbarList.length
  var i = 0
  for (i = 0; i < len; i++) {
    s = authority & (1 << i)
    if (s != 0) {
      toolbar.push(toolbarList[i])
    }
  }
  return toolbar
}

/**
 * 将数据源映射成需要的表单结构的数据
 * @param  {Array} arr       数据源
 * @param  {String} fieldname 数据源中表单字段的键
 * @param  {String} value     数据源中表单内容的键
 * @return {Object}           映射成的表单
 */
export function getObjectDataFromArray (arr, key, value) {
  var data = new Object()
  var _key = ''
  var _value = ''
  arr.forEach(function (element, index) {
    _key = element[key]
    _value = element[value]
    data[_key] = _value
  })
  return data
}

export function getComboBoxMap (searchkey) {

  return ComboBoxDataMap[searchkey]
}

var ComboBoxDataMap = {
  role_name: {
    key: 'role_name',
    valueField: 'id',
    textField: 'role_name',
    datasource: 'ROLE_LISTALL'
  },
  subsys_name: {
    key: 'subsys_name',
    valueField: 'id',//listall时获取的id名称
    textField: 'subsys_name',
    datasource: 'SUBSYS_LISTALL',
    serverField: 'subsys_id',//对应发送到服务器的ID号码
  }
}
